import pickle
from pathlib import Path
import package as função

def main():
    """
    A função main() é a principal função do programa. Ela coordena as diferentes funcionalidades do programa
    Ela interage com o usuário e chama as funções apropriadas para executar as ações desejadas.
    """

    #Salva o diretório atual do programa em uma variável
    diretório_atual = Path.cwd()

    #Define o path completo para o arquivo com a agenda
    arquivo_agenda = diretório_atual / 'agenda.bin'
    
    #Imprime uma mensagem de aviso
    print("\n\033[1mNota:\033[0m O arquivo de agenda será salvo no mesmo diretório do programa.\n")

    #Chama a função para carregar os dados do binário para o programa
    agenda = função.carregar_agenda(arquivo_agenda)

    #Variável utilizada para armazenar a escolha do usuário
    opção = 0

    # Loop principal do programa
    while not opção == 5:
        função.mostrar_menu()

        try:
            opção = int(input("\nEscolha uma opção: "))
        except ValueError:
            print("\nInsira apenas números inteiros na opção de escolha.")
            continue

        if opção == 1:
            #Chama a função para criar um novo contato
            função.criar_contato(agenda, arquivo_agenda)
        elif opção == 2:
            #Chama a função para listar os contatos presente na agenda
            função.listar_contatos(agenda)
        elif opção == 3:
            #Chama a função para buscar um contato específico
            nome = input("Digite o nome do contato: ")
            if len(nome) < 3 or nome == "":
                print("Entrada inválida.")
                continue
            else:
                função.buscar_contato(agenda, nome.lower())
        elif opção == 4:
            #Chama a função para remover um contato da agenda
            nome = input("Digite o nome do contato que deseja remover: ")
            if len(nome) < 3 or nome == "":
                print("Entrada inválida.")
                continue
            else:
                função.remover_contato(agenda, nome.lower())
                função.salvar_agenda(agenda, arquivo_agenda)
        elif opção == 5:
            #Chama a função para salvar o estado atual da agenda e encerra o programa
            função.salvar_agenda(agenda, arquivo_agenda)
            print("Agenda salva. Encerrando o programa.")
        else:
            print("Opção inválida. Tente novamente.")

if __name__ == "__main__":
    main()
